from module.aaa_example import example
from flask import request

# 处理项目的第一次请求之前执行，@app.before_first_request,flask2.3版本中删除
# @example.before_app_first_request
# def first_request():
#     pass

# 每次request前都会执行
@example.before_request
def before():
    url = request.path  # 读取到当前接口的地址

# 如果没有抛出错误,每次request后都会执行
@example.after_request
def after(response):
    return response

# teardown_request函数会在每个请求处理完毕后（包括异常情况）执行；
# 需要设置flask的配置DEBUG=False，teardown_request才会接收到异常对象。
@example.teardown_request
def teardown_request(exc):
    if (exc is not None):
        print(exc)

# 用来注册一个上下文处理函数,返回的字典可以在所有html模板中使用,必须要返回一个字典
# <h1>{{ template_context_test }}!</h1>
@example.context_processor
def my_context():
    # return {"template_context_test":"template_context_test"}
    return dict()

# 这个装饰器的作用就是可以在html页面直接通过{{ template_fn(1,2)}}来调用后端的这个函数。
# @app.template_global
@example.app_template_global
def template_fn(a1,a2):
    return a1+a2

# 错误处理
@example.errorhandler(404)
def error_404(error):
    return error